home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_1599 / 1475 < prev    next >
Encoding:
Internet Message Format  |  1994-08-27  |  2.7 KB

  1. Subject: Re: Just a couple of things.
  2. Date: Wed, 25 May 94 20:43:26 CDT
  3. From: Juergen Lock <nox@jelal.north.de>
  4. In-Reply-To: <9405240712.AA24516@hpbeo79.bbn.hp.com>; from "Claus Brod" at May 24, 94 9:12 am
  5. Message-Id: <9405251843.AA00340@jelal.north.de>
  6.  
  7. Claus Brod writes:
  8.  
  9. > >  hmm, sure?  if we just want IO to halt only processes which are in a
  10. > > disk IO systemcall (as opposed to `halt _every_ process' like its now...)
  11. > > then we don't need real multithreaded filesystems yet, and i don't think
  12. > > the kernel needs much more reentrancy than now like when a process
  13. > > sleeps for tty IO.  and the SCSI interrupt handler could just reset
  14. > > its in-service bit and ipl and then addroottimeout()?
  15.  
  16. > - Process A calls GEMDOS to read a file.
  17. > - GEMDOS calls BIOS to read a block.
  18.  
  19.  s/GEMDOS/filesystem/; s/BIOS/diskdriver/;  ok :)
  20. > - HD driver initiates transfer, puts process A to sleep. Note that
  21. >   process A is now sleeping *inside* GEMDOS.
  22. > - Process B makes a GEMDOS call.
  23. > Similar scenarios are possible for VDI and AES calls which in turn
  24. > call GEMDOS (vst_loadfonts, rsrc_load...).
  25. > The most simple solution would be to block any GEMDOS call when
  26. > another process already is in GEMDOS.
  27.  
  28.  yes thats what i ment, GEMDOS is a single-threaded filesystem...
  29.  
  30. >  This would at least allow
  31. > other processes to use the CPU or call (X)BIOS.
  32.  
  33.  and to do any other systemcalls, those that end up calling filesystems
  34. (and GEM if process A was in GEM?) just go to sleep until its their turn.
  35.  
  36. >  Better than
  37. > nothing.
  38.  
  39.  !!
  40.  
  41.  ok what about this:  add a flag for multithreaded to struct filesys,
  42. if clear (tosfs, current minixfs... the kernels others are `multithreaded'
  43. alreay) do
  44.     while (diskdriver sleeping for IO)
  45.         sleep (IO_Q, IO_SINGLE);
  46. before fs calls, and when the diskdriver is done make it call
  47.     wake (IO_Q, IO_SINGLE);
  48. before it returns.  for GEM in trap #2 do the same
  49.     while (diskdriver sleeping for IO and request came from inside GEM)
  50.         ...
  51. then you can still type in windows etc. when processes do normal disk IO
  52. not thru GEM calls.  (hmm or does the blitter confuse DMA?)
  53.  
  54.  so whats left now?  GEMDOS calls outside tosfs... (maybe that was your
  55. problem?)  there are a few in initialisation and when leaving MiNT,
  56. other than that i see only Sversion and some regular calls to the time
  57. funtions.  ok if we don't want the sleep thing there MiNT has to keep
  58. its time itself...
  59.  
  60.  thats the idea, now what did i miss? :)  cheers
  61.     Juergen
  62.  
  63. PS:  and then make real devices for /dev and with readv/writev, use them
  64. in minixfs, make minixfs multithreaded, port the BSD fs... :-)
  65. -- 
  66. J"urgen Lock / nox@jelal.north.de / UUCP: ..!uunet!unido!uniol!jelal!nox
  67.                                 ...ohne Gewehr
  68. PGP public key fingerprint =  8A 18 58 54 03 7B FC 12  1F 8B 63 C7 19 27 CF DA 
  69.